package com.ruoyi.common.core.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 采购订单商品对象 tb_orders_product
 * 
 * @author ruoyi
 * @date 2023-11-15
 */
@TableName(value="tb_orders_product")
public class OrdersProduct
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    @TableId(value = "id")
    private Long id;

    /** 商品编号 （从100001开始递增的编码） */
    @TableField("pro_no")
    @Excel(name = "商品编号 ", readConverterExp = "从=100001开始递增的编码")
    private String proNo;

    /** 产品名称 */
    @TableField("product_name")
    @Excel(name = "产品名称")
    private String productName;

    /** 产品价格 */
    @TableField("product_price")
    @Excel(name = "产品价格")
    private BigDecimal productPrice;

    /** 数量 */
    @TableField("transferable_number")
    @Excel(name = "数量")
    private Long transferableNumber;

    /** 未入库数量 */
    @TableField("not_stocked_number")
    private Long notStockedNumber;

    /** 金额 */
    @TableField("amount")
    @Excel(name = "金额")
    private BigDecimal amount;

    /** 税率 */
    @TableField("rate")
    @Excel(name = "税率")
    private String rate;

    /** 税额 */
    @TableField("tax")
    @Excel(name = "税额")
    private BigDecimal tax;

    /** 含税金额 */
    @TableField("tax_included")
    @Excel(name = "含税金额")
    private BigDecimal taxIncluded;

    /** 总成本 */
    @TableField("total_cost")
    @Excel(name = "总成本")
    private BigDecimal totalCost;

    /** 入库数量 */
    @TableField("storage_number")
    @Excel(name = "入库数量")
    private Long storageNumber;

    /** 备注 */
    @TableField("product_remark")
    @Excel(name = "备注")
    private String productRemark;

    /** 关联采购订单表(tb_procured_orders) */
    @TableField("orders_id")
    @Excel(name = "关联采购订单表(tb_procured_orders)")
    private Long ordersId;

    /** 删除状态 0存在1删除 */
    @TableField("delete_status")
    @Excel(name = "删除状态 0存在1删除")
    private String deleteStatus;

    @TableField("product_id")
    private Long productId;

    /** 待到货量 */
    @TableField("waiting_stock")
    private Long waitingStock;

    /** 已通知量 */
    @TableField("notified_count")
    private Long notifiedCount;

    /** 未通知量 */
    @TableField("unnotified_quantity")
    private Long unnotifiedQuantity;

    /** 通知收货量 */
    @TableField("notification_quantity")
    private Long notificationQuantity;

    /** 已经申请金额 */
    @TableField("the_amount_requested_quash")
    private BigDecimal theAmountRequestedQuash;

    /** 供应商id */
    @TableField("vendor_id")
    private Integer vendorId;

    /** 交付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("delivery_time")
    private Date deliveryTime;

    @TableField(exist = false)
    private BigDecimal amountRequestedQuash;

    /** 备注 */
    @TableField(exist = false)
    private String requestRemark;

    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    //用于在采购计划详情中的商品信息中展示用
    @TableField(exist = false)
    private String productRate; //商品税额


    /**
     * 货币单位
     */
    @TableField("monetary_id")
    private Integer monetaryId;

    /**
     * 汇率
     */
    @TableField("currency")
    private BigDecimal currency;

    /**
     * 是否是供应商付
     */
    @TableField("is_supplier_pays_freight")
    private Boolean flag;

    /**
     * 运费
     */
    @TableField("freight")
    private BigDecimal freight;

    /**
     * 1688订单号
     */
    @TableField(value = "order_no_1688")
    private String orderNo1688;


    /**
     * GTIN
     */
    @TableField(value = "gtin")
    private String gtin;

    /**
     * 样式
     */
    @TableField(value = "style_class")
    private String styleClass;

    /**
     * 待退货数量
     */
    @TableField(value = "return_pending_quantity")
    private Integer returnPendingQuantity;

    /**
     * 待换货数量
     */
    @TableField(value = "pending_exchange_quantity")
    private Integer pendingExchangeQuantity;

    /**
     * 是否全部退货或者退款完毕（0：否, 1：是)
     */
    @TableField(value = "return_completed_status")
    private Integer returnCompletedStatus;

    /**
     * 操作日志
     */
    @TableField(value = "operation_log")
    private String operationLog;

    /**
     * GTINS
     */
    @TableField(exist = false)
    private List<String> gtins;

    @TableField(exist = false)
    private String sku;

    @TableField(exist = false)
    private List<String> ImagePath;

    public BigDecimal getAmountRequestedQuash() {
        return amountRequestedQuash;
    }

    public void setAmountRequestedQuash(BigDecimal amountRequestedQuash) {
        this.amountRequestedQuash = amountRequestedQuash;
    }

    public Integer getPendingExchangeQuantity() {
        return pendingExchangeQuantity;
    }

    public void setPendingExchangeQuantity(Integer pendingExchangeQuantity) {
        this.pendingExchangeQuantity = pendingExchangeQuantity;
    }

    public String getOperationLog() {
        return operationLog;
    }

    public void setOperationLog(String operationLog) {
        this.operationLog = operationLog;
    }

    public Integer getReturnPendingQuantity() {
        return returnPendingQuantity;
    }

    public void setReturnPendingQuantity(Integer returnPendingQuantity) {
        this.returnPendingQuantity = returnPendingQuantity;
    }

    public Integer getReturnCompletedStatus() {
        return returnCompletedStatus;
    }

    public void setReturnCompletedStatus(Integer returnCompletedStatus) {
        this.returnCompletedStatus = returnCompletedStatus;
    }

    public String getSku() {
        return sku;
    }

    public void setSku(String sku) {
        this.sku = sku;
    }

    public List<String> getImagePath() {
        return ImagePath;
    }

    public void setImagePath(List<String> imagePath) {
        ImagePath = imagePath;
    }

    public String getGtin() {
        return gtin;
    }

    public void setGtin(String gtin) {
        this.gtin = gtin;
    }

    public Integer getVendorId() {
        return vendorId;
    }

    public void setVendorId(Integer vendorId) {
        this.vendorId = vendorId;
    }

    public String getStyleClass() {
        return styleClass;
    }

    public void setStyleClass(String styleClass) {
        this.styleClass = styleClass;
    }

    public Date getDeliveryTime() {
        return deliveryTime;
    }

    public void setDeliveryTime(Date deliveryTime) {
        this.deliveryTime = deliveryTime;
    }

    public String getOrderNo1688() {
        return orderNo1688;
    }

    public void setOrderNo1688(String orderNo1688) {
        this.orderNo1688 = orderNo1688;
    }

    public String getProductRate() {
        return productRate;
    }

    public void setProductRate(String productRate) {
        this.productRate = productRate;
    }

    public Integer getMonetaryId() {
        return monetaryId;
    }

    public void setMonetaryId(Integer monetaryId) {
        this.monetaryId = monetaryId;
    }

    public BigDecimal getCurrency() {
        return currency;
    }

    public void setCurrency(BigDecimal currency) {
        this.currency = currency;
    }

    public List<String> getGtins() {
        return gtins;
    }

    public void setGtins(List<String> gtins) {
        this.gtins = gtins;
    }

    public Boolean getFlag() {
        return flag;
    }

    public void setFlag(Boolean flag) {
        this.flag = flag;
    }

    public BigDecimal getFreight() {
        return freight;
    }

    public void setFreight(BigDecimal freight) {
        this.freight = freight;
    }

    public BigDecimal getTotalCost() {
        return totalCost;
    }

    public void setTotalCost(BigDecimal totalCost) {
        this.totalCost = totalCost;
    }

    public String getRequestRemark() {
        return requestRemark;
    }

    public void setRequestRemark(String requestRemark) {
        this.requestRemark = requestRemark;
    }

    public BigDecimal getTheAmountRequestedQuash() {
        return theAmountRequestedQuash;
    }

    public void setTheAmountRequestedQuash(BigDecimal theAmountRequestedQuash) {
        this.theAmountRequestedQuash = theAmountRequestedQuash;
    }

    public Long getWaitingStock() {
        return waitingStock;
    }

    public void setWaitingStock(Long waitingStock) {
        this.waitingStock = waitingStock;
    }


    public Long getNotifiedCount() {
        return notifiedCount;
    }

    public void setNotifiedCount(Long notifiedCount) {
        this.notifiedCount = notifiedCount;
    }

    public Long getUnnotifiedQuantity() {
        return unnotifiedQuantity;
    }

    public void setUnnotifiedQuantity(Long unnotifiedQuantity) {
        this.unnotifiedQuantity = unnotifiedQuantity;
    }

    public Long getNotificationQuantity() {
        return notificationQuantity;
    }

    public void setNotificationQuantity(Long notificationQuantity) {
        this.notificationQuantity = notificationQuantity;
    }

    public Long getNotStockedNumber() {
        return notStockedNumber;
    }

    public void setNotStockedNumber(Long notStockedNumber) {
        this.notStockedNumber = notStockedNumber;
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setProNo(String proNo) 
    {
        this.proNo = proNo;
    }

    public String getProNo() 
    {
        return proNo;
    }
    public void setProductName(String productName) 
    {
        this.productName = productName;
    }

    public String getProductName() 
    {
        return productName;
    }
    public void setProductPrice(BigDecimal productPrice) 
    {
        this.productPrice = productPrice;
    }

    public BigDecimal getProductPrice() 
    {
        return productPrice;
    }
    public void setTransferableNumber(Long number)
    {
        this.transferableNumber = number;
    }

    public Long getTransferableNumber()
    {
        return transferableNumber;
    }
    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }
    public void setStorageNumber(Long storageNumber) 
    {
        this.storageNumber = storageNumber;
    }

    public Long getStorageNumber() 
    {
        return storageNumber;
    }
    public void setProductRemark(String productRemark) 
    {
        this.productRemark = productRemark;
    }

    public String getProductRemark() 
    {
        return productRemark;
    }
    public void setOrdersId(Long ordersId) 
    {
        this.ordersId = ordersId;
    }

    public Long getOrdersId() 
    {
        return ordersId;
    }
    public void setDeleteStatus(String deleteStatus) 
    {
        this.deleteStatus = deleteStatus;
    }

    public String getDeleteStatus() 
    {
        return deleteStatus;
    }

    public String getRate() {
        return rate;
    }

    public void setRate(String rate) {
        this.rate = rate;
    }

    public BigDecimal getTax() {
        return tax;
    }

    public void setTax(BigDecimal tax) {
        this.tax = tax;
    }

    public BigDecimal getTaxIncluded() {
        return taxIncluded;
    }

    public void setTaxIncluded(BigDecimal taxIncluded) {
        this.taxIncluded = taxIncluded;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    @Override
    public String toString() {
        return "OrdersProduct{" +
                "id=" + id +
                ", proNo='" + proNo + '\'' +
                ", productName='" + productName + '\'' +
                ", productPrice=" + productPrice +
                ", transferableNumber=" + transferableNumber +
                ", notStockedNumber=" + notStockedNumber +
                ", amount=" + amount +
                ", totalCost=" + totalCost +
                ", storageNumber=" + storageNumber +
                ", productRemark='" + productRemark + '\'' +
                ", ordersId=" + ordersId +
                ", deleteStatus='" + deleteStatus + '\'' +
                ", productId=" + productId +
                ", waitingStock=" + waitingStock +
                ", notifiedCount=" + notifiedCount +
                ", unnotifiedQuantity=" + unnotifiedQuantity +
                ", notificationQuantity=" + notificationQuantity +
                ", theAmountRequestedQuash=" + theAmountRequestedQuash +
                ", amountRequestedQuash=" + amountRequestedQuash +
                ", requestRemark='" + requestRemark + '\'' +
                ", createTime=" + createTime +
                ", updateTime=" + updateTime +
                '}';
    }
}
